home *** CD-ROM | disk | FTP | other *** search
/ Apple WWDC 1996 / WWDC96_1996 (CD).toast / Technology Materials / MacOS 8 Resources / Developer Tools / Mac OS 8 Interfaces & Libraries / Interfaces / IDLIncludes / HIEditText.idl < prev    next >
Text File  |  1996-05-01  |  12KB  |  311 lines

  1. /*
  2.      File:        HIEditText.idl
  3.  
  4.      Contains:    IDL interface for the HIEditText class
  5.  
  6.      Version:    Technology:    8.0
  7.                  Release:    Universal Interfaces 3.0d3 on Copland DR1
  8.  
  9.      Copyright:    © 1995-1996 by Apple Computer, Inc.  All rights reserved.
  10.  
  11.      Bugs?:        If you find a problem with this file, send the file and version
  12.                  information (from above) and the problem description to:
  13.  
  14.                      Internet:    apple.bugs@applelink.apple.com
  15.                      AppleLink:    APPLE.BUGS
  16. */
  17.  
  18.  
  19. #ifndef __TBEDITTEXT_IDL__
  20. #define __TBEDITTEXT_IDL__
  21.  
  22. #include <Types.idl>
  23. #include <TextEngineSystem.idl>
  24.  
  25. #include <TextEngineTypes.idl>
  26. #include <HIPanels.idl>
  27.  
  28. interface HIEditText : HIPanel {
  29.  
  30.  
  31. // ======================================================
  32. // Initialization
  33. // ======================================================
  34.     OSStatus InitEditTextPanel (in ::RefLabel identifier, in HIWindow window, 
  35.                                 in Rect bounds,in TextEngineID textEngine , in TextEngineOptions textEngineOptions );
  36.                                 
  37.     
  38.     OSStatus GetTextEngine(out TSystemTextEngine theEngine);                            
  39. // ======================================================
  40. // Attribute Getter/Setter
  41. // ======================================================        
  42.     boolean IsTextReadOnly() ;
  43.  
  44.     OSStatus MakeTextReadOnly(in boolean readOnly);
  45.     
  46.     //valid only when text is read only    
  47.     OSStatus EnableSelection(in boolean enableIt);
  48.  
  49.     //always true if Text is not read only
  50.     boolean IsTextSelectable() ;
  51.     
  52.     boolean IsTextMaskable() ;
  53.         
  54.     
  55. // ======================================================
  56. // Text Bounds and margins
  57. // ======================================================
  58.     // setting  bounds where the text flows
  59.     // the value kTextUnbounded means that text has no fixed boundary
  60.     //line  breaks only on CR. (variable wifth or height) .
  61.     //kUseViewBounds means that the boundary of text flow is the panel bound
  62.     OSStatus SetTextBounds( in UInt32 width, in UInt32 height );
  63.  
  64.     OSStatus GetTextBounds( out UInt32 width, out UInt32 height );
  65.     
  66.     
  67.     //the viewRect for the text is always the panel rect unless you specify
  68.     // margins ( offset to add to left top and remove from bottom right)
  69.     OSStatus SetMargins( in Rect marginOffsets );
  70.     
  71.     OSStatus GetMargins( out Rect marginOffsets );
  72.  
  73.     // all routines that take index as input param assume that it is aligned on character boundaries
  74.     //do we need to change the type from ByteOffset to CharacterOffsetInBytes ??
  75. // ======================================================
  76. // Text insertion/deletion/replacement
  77. // ======================================================
  78.     OSStatus ReplaceTextByTextObject(in ByteOffset startIndex, in ByteOffset endIndex, in TextObject theText );
  79.     // replace the specified range (inclusive) by the given TextObject
  80.     // if the range to be deleted has unique language/region/encoding and the TextObject is mono-Run
  81.     //    with the same     language/region/encoding as the deleted range than the inserted text  will inherit
  82.     // the same attribute else new style run(s) will be created with the suitable attributes
  83.  
  84.     //special version of RepalceTextByTextObject to replace the selected text 
  85.     OSStatus RepalceSelectionByTextObject(in TextObject theText);
  86.  
  87.     OSStatus DeleteText(in ByteOffset startIndex, in ByteOffset endIndex)        ;
  88.     // detete the given range of text
  89.  
  90.     OSStatus ExtractText( in ByteOffset startIndex, in ByteOffset endIndex ,out TextObject newTextObject );
  91.  
  92. // ======================================================
  93. //Required attributes to be handled in each text panel    
  94. // ======================================================
  95.  
  96.     OSStatus SetTextFont(in ByteOffset startIndex, in ByteOffset endIndex, in Str255 fontName)        ;
  97.  
  98.     OSStatus SetTextSize(in ByteOffset startIndex, in ByteOffset endIndex, in UInt16 textSize )        ;
  99.  
  100.     OSStatus SetTextQDFace(in ByteOffset startIndex, in ByteOffset endIndex, 
  101.                             in TextFontFace theQDFace,in boolean switchIt)        ;
  102.  
  103.     OSStatus SetTextColor(in ByteOffset startIndex, in ByteOffset endIndex, in RGBColor theColor)        ;
  104.  
  105.     OSStatus SetTextAlignment(in ByteOffset startIndex, in ByteOffset endIndex, in TextAlignment align)        ;
  106.     // all engines should support text Justification for the whole text, but range justification is optional
  107.     //if the engine does not support selection alignement and the startIndex & endIndex do not specify the
  108.     //whole text than an error txFeatureNotSupported will be issued.
  109.  
  110.  
  111.     OSStatus GetTextFont(in ByteOffset startIndex, in ByteOffset endIndex, out Str255 fontName)        ;
  112.     //empty string if multifont
  113.  
  114.     OSStatus GetTextSize(in ByteOffset startIndex, in ByteOffset endIndex, out UInt16 textSize )        ;
  115.     // 0 if multiSize
  116.     
  117.     OSStatus GetTextQDFace(in ByteOffset startIndex, in ByteOffset endIndex, 
  118.                             out TextFontFace theQDFace)        ;
  119.     //
  120.     
  121.     OSStatus GetTextColor(in ByteOffset startIndex, in ByteOffset endIndex, out RGBColor theColor)        ;
  122.  
  123.     OSStatus GetTextAlignment(in ByteOffset startIndex, in ByteOffset endIndex, out TextAlignment align)        ;
  124.  
  125.     
  126.     // given one attribute set it value
  127.     //this is a low level API for getting & setting one attribute
  128.     OSStatus SetOneTextAttribute( in ByteOffset startIndex, in ByteOffset endIndex,
  129.                          in TextAttributeTag theAttribute,
  130.                          in void* theValuePtr, in ByteCount theValueSize);
  131.     // Caller should allocate the data size (we assume that he knows the type of the value 
  132.     //he is asking for.
  133.     OSStatus GetOneTextAttribute( in ByteOffset startIndex, in ByteOffset endIndex,
  134.                          in TextAttributeTag theAttribute, 
  135.                          in ByteCount theAvailableSize,
  136.                          out void* theValuePtr, 
  137.                          out ByteCount theValueSize );
  138.     
  139. // ======================================================
  140. // Text Drawing enable/Disable
  141. // ======================================================
  142.     OSStatus EnableDrawText();
  143.     OSStatus DisableDrawText();
  144.     boolean IsDrawTextEnabled();
  145.     
  146.     
  147. // ======================================================
  148. // dirty flag manipulation
  149. // ======================================================
  150.     OSStatus SetDirtyFlag();
  151.     OSStatus ResetDirtyFlag();
  152.     boolean IsPanelDirty();
  153. // ======================================================
  154. // selection manipulation
  155. // ======================================================
  156.     OSStatus GetSelection( out ByteOffset startIndex, out ByteOffset endIndex );
  157.  
  158.     OSStatus SetSelection( in ByteOffset startIndex, in ByteOffset endIndex );
  159.  
  160.     OSStatus RevealText( in ByteOffset startIndex, in ByteOffset endIndex, in boolean revealBegin );
  161. // ======================================================
  162. // iteration routines are mapped to the engine iterators
  163. // so this is just a set of wrapper routines
  164. //    They are kind of low level routines and almost all apps
  165. // ======================================================
  166.     OSStatus CreateTextAttributeIterator( in ByteOffset startIndex, in ByteOffset endIndex, 
  167.                                     in Collection textAttributeFilterCollection, 
  168.                                     out TextAttributeIteratorRef iterationRef );
  169.     //    Create a Text Attribute iterator for the specified text range.
  170.     //    The application specifies the attributes of interest in a collection whose...
  171.     //        1.    'tags' are the attribute identifiers
  172.     //        2.    'collectionUser0Bit'of attribute if set specifies "wild card" value.
  173.     //        3.    'data' portion is value to match during iteration (if not wild card iteration).
  174.     //    The resulting iterator will allow the application to iterate over the text range, and identify
  175.     //    portions of the text which match (in value) the attributes specified in the original collection,
  176.     //    and/or iterate over different attribute runs for those attributes for which "wild card" is specified.
  177.     // The default iterator (nil collection) will iterate on every attribute change
  178.     
  179.     //caller owns the Collection
  180.     OSStatus TextAttrIteratorGetNextRange( in TextAttributeIteratorRef iterationRef, 
  181.                                             out ByteOffset startIndex, out ByteOffset endIndex,
  182.                                             in Collection textAttrCollection );
  183.     
  184.     OSStatus DisposeTextAttrIterator(in TextAttributeIteratorRef theIterator);
  185.  
  186.     OSStatus SetTheTextAttribute( in ByteOffset startIndex, in ByteOffset endIndex,
  187.                          in Collection textAttrCollection);
  188.     //    For every attribute in the filter collection specified, set the attributes of the text Range to
  189.     //    the values specified in the collection.
  190.     
  191.     OSStatus GetContinuousTextAttribute( in ByteOffset startIndex, in ByteOffset endIndex,
  192.                                      in Collection textAttrCollection );
  193.     //    Return all the attributes which are continuous over the specified text range.  Attributes which
  194.     //    are not continuous over the text range are not included in the collection returned.
  195.     
  196.     
  197. //======================================================
  198. //    UI commmand
  199. //======================================================
  200.     
  201.     OSStatus EnableUICommandInPanel();
  202.     
  203.     OSStatus DisableUICommandInPanel();
  204.     
  205.     boolean IsUICommandEnabledInPanel();
  206.     
  207.     
  208. //======================================================
  209. //    KeyBoard
  210. //======================================================
  211.     OSStatus KeyboardLanguageChanged(in LocaleIdentifier theLocaleID); // what params ??
  212.  
  213. //======================================================
  214. //    Scrolling text
  215. //======================================================
  216.     OSStatus ScrollText(in UInt32 dh, in UInt32 dv) ;
  217.     
  218.     OSStatus GetScrollTextAmount(out UInt32 dh, out UInt32 dv) ;
  219.  
  220.     // routine for tracking mouse down so caller can update scroll bar controls
  221.     // when click in text occurs the routine will be called with a pointer to the TBEditTExt
  222.     //the scrolled values and the userData specified here.
  223.     //The scrolling of the text will be already done.
  224.     OSStatus SetMouseDownTrackActionRoutine(in MouseDownInTextPanelTrackProcPtr theMouseTrackProcPtr, in void* userData) ;
  225.     
  226.     implementation {
  227. // ======================================================
  228. // Attributes 
  229. // ======================================================
  230.  //need getter for all and setter for non readonly
  231.  
  232.         passthru C_h =     "#include <Types.h>"
  233.                         "#include <Collections.h>"
  234.                         "#include <Drag.h>"
  235.                         "#include <Events.h>"
  236.                         "#include <Quickdraw.h>"
  237.                         "#include <TextObjects.h>"
  238.                         "#include <TextEngineTypes.h>"
  239.                         "#include <TextEngineSystem.h>"
  240.                         "#include <TextCommon.h>"
  241.                         "#include <MixedMode.h>" ;
  242.  
  243.         passthru C_xh = "#include <Types.h>"
  244.                         "#include <Collections.h>"
  245.                         "#include <Drag.h>"
  246.                         "#include <Events.h>"
  247.                         "#include <Quickdraw.h>"
  248.                         "#include <TextObjects.h>"
  249.                         "#include <TextCommon.h>"
  250.                         "#include <TextEngineTypes.h>"
  251.                         "#include <TextEngineSystem.h>"
  252.                         "#include <TextCommon.h>"
  253.                         "#include <MixedMode.h>";
  254.         
  255.         
  256.         releaseorder:    InitEditTextPanel ,
  257.                         GetTextEngine ,
  258.                         IsTextReadOnly ,
  259.                         IsTextSelectable ,
  260.                         IsTextMaskable ,
  261.                         MakeTextReadOnly ,
  262.                         EnableSelection ,
  263.                         SetTextBounds ,
  264.                         GetTextBounds,
  265.                         SetMargins ,
  266.                         GetMargins,
  267.                         ReplaceTextByTextObject ,
  268.                         RepalceSelectionByTextObject ,
  269.                         DeleteText ,
  270.                         ExtractText ,
  271.                         SetTextFont ,
  272.                         SetTextSize ,
  273.                         SetTextQDFace ,
  274.                         SetTextColor ,
  275.                         SetTextAlignment ,
  276.                         GetTextFont ,
  277.                         GetTextSize ,
  278.                         GetTextQDFace ,
  279.                         GetTextColor ,
  280.                         GetTextAlignment ,
  281.                         SetOneTextAttribute ,
  282.                         GetOneTextAttribute ,
  283.                         EnableDrawText,
  284.                         DisableDrawText,
  285.                         IsDrawTextEnabled,
  286.                         SetDirtyFlag,
  287.                         ResetDirtyFlag,
  288.                         IsPanelDirty,
  289.                         reserved0 ,
  290.                         reserved1 ,
  291.                         reserved2 ,
  292.                         GetSelection ,
  293.                         SetSelection ,
  294.                         RevealText ,
  295.                         CreateTextAttributeIterator ,
  296.                         TextAttrIteratorGetNextRange ,
  297.                         DisposeTextAttrIterator ,
  298.                         SetTheTextAttribute ,
  299.                         GetContinuousTextAttribute ,
  300.                         EnableUICommandInPanel,
  301.                         IsUICommandEnabledInPanel,
  302.                         DisableUICommandInPanel,
  303.                         KeyboardLanguageChanged ,
  304.                         ScrollText ,
  305.                         GetScrollTextAmount,
  306.                         SetMouseDownTrackActionRoutine ;
  307.     };
  308. };
  309.  
  310. #endif
  311.